The present invention relates generally to methods for providing a status to devices in a distributed system. Merely by way of example, embodiments of the present invention provide a method for providing a meeting status to conference bridges in a distributed Voice over-Internet Protocol (VoIP) system. The scope of embodiments of the present invention is broader than this particular application, however, and can be applied to other applications and distributed systems.
VoIP systems route voice conversations and other communications over the Internet or other packet switched networks. A distributed VoIP system typically includes a distributed set of devices, such as switches, servers, and conference bridges, that provide applications enabled by the integration of computer systems with telephony services.
A distributed system increases system performance and reliability by eliminating single points of failure. If a device in the system fails, other devices can backup the failed device by providing the services and functions of the failed device. However, this redundancy requires that extra resources be available within the system. For example, if a switch supporting 10 IP phones fails, the remaining switches in the system must have the capacity to support the 10 IP phones that were being supported by the failed switch. To provide the extra resources, a system may be designed to have extra capacity to support the failure of any device in the system.
Additionally, to be able to backup other devices, each device must know or have access to the necessary configuration of the other devices within the system. Continuing the example above, the switches that backup the failed switch need to know the configuration of the failed switch (e.g. time zone, language preference, dialing prefix, local area code). This also requires extra resources because the configuration of each device must be known or available to the other devices in the system (e.g. stored in memory or stored in a central location).
The devices also need to know the status of other devices in the system. For example, each conference bridge within a VoIP system needs to know which meetings are being hosted by other conference bridges as well as the participants associated with each meeting. In the event a conference bridge fails, the other conference bridges in the system can backup the failed device and host the meetings that were in progress. Knowing the status of the other devices also enables resources to be shared and managed to improve the performance of the system. For example, if the resources of a particular conference bridge are being utilized near capacity, and a new meeting request is received by the conference bridge, the request may be routed to another conference bridge in the system that is better suited to host the new meeting. This also requires extra resources because the status of each device must be known or available to the other devices in the system. Additionally, the status must be kept current through periodic updates.
Conventional methods for providing a status to devices in a distributed system include a broadcast method and a central server method. The broadcast method involves periodic status updates that are broadcast from each device to all of the other devices in the system. This method, however, leads to a significant increase in network traffic. For example, if each device in a system sends a status message to every other device in the system, N*(N−1) status messages are sent for each status update (where N is the number of devices in the system). As the number of devices in the system increases, the number of status messages required for each update increases geometrically.
The central server method involves periodic status updates that are sent from each device to a central server, and periodic system status updates that are sent from the central server to each device. However, this method reduces the reliability of the system because the central server is a single point of failure. This method also increases network traffic. For example, if each device sends a status message to a central server, and the central server sends a system status message to each device in the system, 2*N status messages are sent for each status update (where N is the number of devices in the system).
Thus, there is a general need in the art for improved methods of providing a status to devices in a distributed system.